const http = require("http");
const fs = require("fs");

var userList = [];

// 提取数据
function getData(str){
    // console.log(str); // username=zan&age=20&choose=first
    var arr = str.split("&"); //数组通过 & 分开
    var obj = {};
    for(var i=0; i<arr.length; i++){
        var childArr = arr[i].split("="); //再次通过 = 切分
        obj[childArr[0]] = childArr[1]; //数组的第一项是属性名  第二项是属性值
    }
    return obj;
}

http.createServer((req,res) => {
    var urlObj = new URL(req.url, "http://localhost:8081/")
    var pathName = urlObj.pathname;
    // console.log(pathName)
    // 响应提交表单的页面到客户端
    if(pathName == "/"){
        var fileContent = fs.readFileSync("./post.html");
        res.writeHead(200, {"Content-Type":"text/html;charset=utf-8"})
        res.write(fileContent);
        res.end();
    }
    // 响应list.html页面到浏览器
    else if(pathName == "/list"){
        var fileContent = fs.readFileSync("./list.html");
        res.writeHead(200, {"Content-Type":"text/html;charset=utf-8"})
        res.write(fileContent);
        res.end();
    }
    // 做表单数据的接收，存储到userList中
    else if(pathName == "/save"){
        // console.log(req.headers);
        // console.log(req);
        var str = "";
        req.on("data",(chunk)=>{
            str += chunk;
        })
        req.on("end",()=>{
            // console.log(str);
            var postObj = getData(str);
            userList.push(postObj);
            res.end("submit sucess"); // 如果不加，就会一直更新
        })
    }
    // 响应userList数据到客户端
    else if(pathName =="/getlist"){
        var userStr = JSON.stringify(userList);
        res.writeHead(200, {"Content-Type":"text/plain"});
        res.end(userStr);
    }
    // 删除数据，接收请求 /del?deluser=zhangsan,根据username从userList里面将该条数据删除
    else if(pathName = "/del"){
        var delUser = urlObj.searchParams.get("deluser") //获取deluser的值
        console.log(delUser,userList)
        for(var i=0;i<userList.length;i++){
            if(userList[i]['username']==delUser){
                userList.splice(i,1); //第一个值是索引，第二个是个数
                res.end("delete success");
                return;
            }
        }
    }
    
}).listen(8081);